type t 'a;
value length: t 'a -> int;
value empty: unit -> t 'a;
value create: int -> t 'a;
value singleton: 'a -> t 'a;

value is_empty: t 'a -> bool;
value clear: t 'a -> unit;
value add: t 'a -> 'a -> unit;
value remove: t 'a -> 'a -> unit;
value remove_exn: t 'a -> 'a -> unit;
value mem: t 'a -> 'a -> bool;
value iter: ('a -> unit) -> t 'a -> unit;
value fold: ('a -> 'b -> 'b) -> t 'a -> 'b -> 'b;
value to_list: t 'a -> list 'a;
